/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.diplomka.servicelayer.gamelogic.manager;

import cz.muni.fi.diplomka.servicelayer.dto.Research;
import cz.muni.fi.diplomka.servicelayer.dto.ResearchInProgress;
import java.util.List;

/**
 * Interface for manipulating with Researches of Player
 *
 * @author Jakub Kutil
 */
public interface ResearchManager {

    /**
     * Begins researching specified Research
     *
     * @param researchInProgress specified Research
     */
    public void startResearch(ResearchInProgress researchInProgress);

    /**
     * Finished researching specified Research
     *
     * @param researchInProgress Research to finish
     */
    public void finishResearch(ResearchInProgress researchInProgress);

    /**
     * Gets all finished Researches of specified Player
     *
     * @param playerId Id of specified Player
     * @return list of finished Researches of specified Player
     */
    public List<Research> getAllFinishedResearchesOfPlayer(Long playerId);

    /**
     * Gets all ongoing Researches of specified Player
     *
     * @param playerId Id of specified Player
     * @return list of ongoing Researches of specified Player
     */
    public List<ResearchInProgress> getAllResearchesInProgressOfPlayer(Long playerId);

    /**
     * Gets all ongoing Researches
     *
     * @return list of ongoing Researches
     */
    public List<ResearchInProgress> getAllResearchesInProgress();
}
